package cn.neusoft.filter;

import cn.neusoft.vo.ResultBean;
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebFilter("/*")
public class CrosFilter extends HttpFilter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

        System.out.println("------跨域设置-------");

        HttpServletResponse response = (HttpServletResponse) res;

        //获取前端的访问路径
        String origin = ((HttpServletRequest) req).getHeader("Origin");
        System.out.println("origin----"+origin);

        if (origin == null ||
            origin.contains("http://localhost:8888") ||
            origin.contains("http://localhost:9999")){
            //注意：这里设置只允许http://localhost:8081进行跨域访问
            response.setHeader("Access-Control-Allow-Origin", origin);
            response.setHeader("Access-Control-Allow-Credentials", "true");
            response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT, PATCH");
            response.setHeader("Access-Control-Max-Age", "3628800");
            response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization,content-type");

            //放行
            chain.doFilter(req,res);

        } else{

            response.setContentType("application/json;charset=UTF-8");
            ObjectMapper objectMapper = new ObjectMapper();
            String json = objectMapper.writeValueAsString(ResultBean.ERROR("不允许跨域访问"));
            response.getWriter().write(json);

        }



    }


}
